From 2f8bdad8238c78917b2f36f8e11de1191fc6d012 Mon Sep 17 00:00:00 2001 From: Alastair Tse Date: Thu, 25 Jan 2007 14:52:36 +0000 Subject: [PATCH] [XEND] Ignore socket.shutdown() exceptions Add further comments about why that shutdown() exists. Signed-off-by: Alastair Tse --- tools/python/xen/web/httpserver.py | 10 ++++++--- tools/python/xen/xend/server/XMLRPCServer.py | 22 +++++++++++++------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/tools/python/xen/web/httpserver.py b/tools/python/xen/web/httpserver.py index 14965e418f..d8a1f78a56 100644 --- a/tools/python/xen/web/httpserver.py +++ b/tools/python/xen/web/httpserver.py @@ -333,11 +333,15 @@ class HttpServer: def close(self): self.closed = True self.ready = False + # shutdown socket explicitly to allow reuse + try: + self.socket.shutdown(2) + except socket.error: + pass + try: - # shutdown socket explicitly to allow reuse - self.socket.shutdown(socket.SHUT_RDWR) self.socket.close() - except: + except socket.error: pass def getServerAddr(self): diff --git a/tools/python/xen/xend/server/XMLRPCServer.py b/tools/python/xen/xend/server/XMLRPCServer.py index 64895104be..722ccb4b2b 100644 --- a/tools/python/xen/xend/server/XMLRPCServer.py +++ b/tools/python/xen/xend/server/XMLRPCServer.py @@ -188,14 +188,22 @@ class XMLRPCServer: def cleanup(self): log.debug('XMLRPCServer.cleanup()') - try: - if hasattr(self, 'server'): - # shutdown socket explicitly to allow reuse - self.server.socket.shutdown(socket.SHUT_RDWR) + if hasattr(self, 'server'): + try: + # This is here to make sure the socket is actually + # cleaned up when close() is called. Otherwise + # SO_REUSEADDR doesn't take effect. To replicate, + # try 'xend reload' and look for EADDRINUSE. + # + # May be caued by us calling close() outside of + # the listen()ing thread. + self.server.socket.shutdown(2) + except socket.error, e: + pass # ignore any socket errors + try: self.server.socket.close() - except Exception, exn: - log.exception(exn) - pass + except socket.error, e: + pass def shutdown(self): self.running = False -- 2.30.2